- Published on
부하 테스트를 해보자[2]
이전 글에서는 부하 테스트와 스트레스 테스트의 차이, 어떤 부하 테스트 툴을 사용할지 알아보았습니다.
이번 글에서는 Locust를 사용하여 저의 프로젝트 부하 테스트를 해보겠습니다.
Locust 사용법은 Locust의 공식 Docs을 참조하시기 바랍니다.
분석
정확도를 위해 2번의 측정을 하였으며, 사용자당 1~4초 사이에 요청을 하였습니다.
1. 최대 2천명의 사용자에 초당 50명의 사용자 증가
위 그림을 보시면 30 RPS(Requests Per Second)부터 페이지 failures가 발생하고 20RPS부터 30RPS까지 응답시간이 증가하는 것을 확인 할 수 있습니다.
유저수를 보면 750명부터 응답시간이 느려지기 시작하고 1150명부터 failures가 발생합니다.
정리하면 현제 서버는 초당 20개의 요청까지는 부하 없이 해결할 수 있으며 이상부턴 부하가 발생하고 30RPS까지 견딜 수 있는것을 확인할 수 있습니다.
결과의 신뢰성을 위해 조건을 조금 변경하여 테스트 해봅시다.
2. 최대 2천명의 사용자에 초당 25명의 사용자 증가
더 정확한 결과를 위해 조금 천천히 사용자를 증가시켜 보았습니다.
확인결과 22~27RPS부터 부하가 걸려 응답시간이 늦어지고 31RPS까지 올라갔다 29RPS에서 failures가 발생하기 시작합니다.
유저수는 500명쯤 부터 부하가 걸리고 800명에서 failures가 발생합니다.
비교
위 두 결과를 비교해보면 20RPS정도부터 부하가 발생하고 30RPS까지가 최대 수용 범위 인것을 확인 할 수 있습니다.
또한 2번 테스트에서 31RPS까지 올랐다 29RPS까지 떨어져서 failures가 발생한 것으로 보아 20RPS 이상부터 부하가 쌓이고 있다고 추측 가능합니다.
유저수는 1번 테스트와 2번 테스트 차이가 있는 것으로 보아 서버 성능 지표는 RPS가 보다 정확한 지표이며
결과
이번 부하 테스트 결과 사용자는 넉넉잡아 1~4초사이에 상호작용을 한다고 생각하면 최대 500명 정도의 사용자를 받을 수 있을 것으로 확인됩니다.
여담
AWS Free Tier을 사용함에도 불구하고 data transfer 비용이 조금 책정이 됩니다.
실제 사용자가 없어 아주 적은 트래픽이 발생함에도 불구하고 3천원 정도의 비용이 발생했습니다.
테스트도 비용이 든다는 것을 느끼고, 실제 프로덕션 테스트시 많은 트래픽 발생 할수 있음을 생각하며 좋은 테스트 전력을 새워 테스트하도록 합시다.